Hibernate (framework)
   HOME

TheInfoList



OR:

Hibernate ORM (or simply Hibernate) is an
object–relational mapping Object–relational mapping (ORM, O/RM, and O/R mapping tool) in computer science is a programming technique for converting data between type systems using object-oriented programming languages. This creates, in effect, a "virtual object databa ...
tool for the
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
programming language. It provides a
framework A framework is a generic term commonly referring to an essential supporting structure which other things are built on top of. Framework may refer to: Computing * Application framework, used to implement the structure of an application for an op ...
for mapping an
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
domain model to a
relational database A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relatio ...
. Hibernate handles
object–relational impedance mismatch The object–relational impedance mismatch is a set of conceptual and technical difficulties that are often encountered when a relational database management system (RDBMS) is being served by an application program (or multiple application progra ...
problems by replacing direct,
persistent Persistent may refer to: * Persistent data * Persistent data structure * Persistent identifier * Persistent memory * Persistent organic pollutant * Persistent Systems, a technology company * USS ''Persistent'', three United States Navy ships See ...
database accesses with high-level object handling functions. Hibernate is
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, no ...
that is distributed under the
GNU Lesser General Public License The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
2.1. Hibernate's primary feature is mapping from Java classes to database tables, and mapping from Java data types to SQL data types. Hibernate also provides data query and retrieval facilities. It generates SQL calls and relieves the developer from the manual handling and object conversion of the result set.


Mapping

The mapping of Java classes to database tables is implemented by the configuration of an
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
file or by using Java Annotations. When using an XML file, Hibernate can generate skeleton
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
for the persistence classes. This is auxiliary when annotations are used. Hibernate can use the XML file or the Java annotations to maintain the
database schema The database schema is the structure of a database described in a formal language supported by the database management system (DBMS). The term "schema" refers to the organization of data as a blueprint of how the database is constructed (divide ...
. There are provided facilities to arrange one-to-many and
many-to-many Many-to-many communication occurs when information is shared between groups. Members of a group receive information from multiple senders. Wikis are a type of many-to-many communication, where multiple editors collaborate to create content that is ...
relationships between classes. In addition to managing associations between objects, Hibernate can also manage reflexive associations wherein an object has a one-to-many relationship with other instances of the
class Class or The Class may refer to: Common uses not otherwise categorized * Class (biology), a taxonomic rank * Class (knowledge representation), a collection of individuals or objects * Class (philosophy), an analytical concept used differentl ...
type. Hibernate supports the mapping of custom value types. This makes the following scenarios possible: * Overriding the default SQL type when mapping a column to a property. * Mapping Java Enums to columns as though they were regular properties. * Mapping a single property to multiple columns. Definition: Objects in an
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
application follow OOP principles, while objects in the back-end follow
database normalization Database normalization or database normalisation (see spelling differences) is the process of structuring a relational database in accordance with a series of so-called normal forms in order to reduce data redundancy and improve data integrity. ...
principles, resulting in different representation requirements. This problem is called "
object–relational impedance mismatch The object–relational impedance mismatch is a set of conceptual and technical difficulties that are often encountered when a relational database management system (RDBMS) is being served by an application program (or multiple application progra ...
". Mapping is a way of resolving the object–relational impedance mismatch problem. Mapping informs the ORM tool of what Java class object to store in which database table.


Hibernate Query Language (HQL)

Hibernate provides a SQL inspired language called Hibernate Query Language (HQL) for writing SQL-like queries against Hibernate's data objects. ''Criteria Queries'' are provided as an
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
alternative to HQL. Criteria Query is used to modify the objects and provide the restriction for the objects. HQL (Hibernate Query Language) is the object-oriented version of SQL. It generates database independent queries so that there is no need to write database-specific queries. Without this capability, changing the database would require individual SQL queries to be changed as well, leading to maintenance issues.


Persistence

Hibernate provides transparent persistence for Plain Old Java Objects (POJOs). The only strict requirement for a persistent class is a no-argument constructor, though not necessarily . Proper behavior in some applications also requires special attention to the and methods in the object classes. Hibernate recommends providing an identifier attribute, and this is planned to be a mandatory requirement in a future release. Collections of data objects are typically stored in Java collection classes, such as implementations of the and interfaces. Java generics, introduced in Java 5, are also supported. Hibernate can be configured to
lazy load Lazy loading (also known as asynchronous loading) is a design pattern commonly used in computer programming and mostly in web design and development to defer initialization of an object until the point at which it is needed. It can contribute to ef ...
associated collections. Lazy loading is the default as of Hibernate 3. Related objects can be configured to ''
cascade Cascade, Cascades or Cascading may refer to: Science and technology Science *Cascade waterfalls, or series of waterfalls * Cascade, the CRISPR-associated complex for antiviral defense (a protein complex) * Cascade (grape), a type of fruit * Bioc ...
'' operations from one object to the other. For example, a parent class object can be configured to cascade its and operations to its child class objects.


Integration

Hibernate can be used both in standalone
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
applications and in
Java EE Jakarta EE, formerly Java Platform, Enterprise Edition (Java EE) and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web serv ...
applications using
servlets A Jakarta Servlet (formerly Java Servlet) is a Java software component that extends the capabilities of a server. Although servlets can respond to many types of requests, they most commonly implement web containers for hosting web application ...
, EJB session beans, and JBI service components. It can also be included as a feature in other programming languages. For example,
Adobe Adobe ( ; ) is a building material made from earth and organic materials. is Spanish for ''mudbrick''. In some English-speaking regions of Spanish heritage, such as the Southwestern United States, the term is used to refer to any kind of e ...
integrated Hibernate into version 9 of
ColdFusion Adobe ColdFusion is a commercial rapid web-application development computing platform created by J. J. Allaire in 1995. (The programming language used with that platform is also commonly called ColdFusion, though is more accurately known as CF ...
(which runs on J2EE app servers) with an abstraction layer of new functions and syntax added into
CFML ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine. Multiple commercial and open source implementations of CFML engines are availab ...
.


Entities and components

In Hibernate
jargon Jargon is the specialized terminology associated with a particular field or area of activity. Jargon is normally employed in a particular Context (language use), communicative context and may not be well understood outside that context. The conte ...
, an ''entity'' is a stand-alone object in Hibernate's
persistent Persistent may refer to: * Persistent data * Persistent data structure * Persistent identifier * Persistent memory * Persistent organic pollutant * Persistent Systems, a technology company * USS ''Persistent'', three United States Navy ships See ...
mechanism which can be manipulated independently of other objects. In contrast, a ''component'' is subordinate to an entity and can be manipulated only with respect to that entity. For example, an Album object may represent an entity; but the Tracks object associated with the Album objects would represent a ''component'' of the Album entity, if it is assumed that Tracks can only be saved or retrieved from the database through the Album object. Unlike J2EE, Hibernate can switch databases.


History

Hibernate was started in 2001 by Gavin King with colleagues from Cirrus Technologies as an alternative to using EJB2-style entity beans. The original goal was to offer better persistence capabilities than those offered by EJB2; by simplifying the complexities and supplementing certain missing features. In early 2003, the Hibernate development team began Hibernate2 releases, which offered many significant improvements over the first release. JBoss, Inc. (now part of
Red Hat Red Hat, Inc. is an American software company that provides open source software products to enterprises. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North Carolina, with other offices worldwide. Red Hat has become ass ...
) later hired the lead Hibernate developers in order to further its development. In 2005, Hibernate version 3.0 was released. Key features included a new Interceptor/Callback architecture, user defined filters, and JDK 5.0
Annotations An annotation is extra information associated with a particular point in a document or other piece of information. It can be a note that includes a comment or explanation. Annotations are sometimes presented in the margin of book pages. For anno ...
(Java's
metadata Metadata is "data that provides information about other data", but not the content of the data, such as the text of a message or the image itself. There are many distinct types of metadata, including: * Descriptive metadata – the descriptive ...
feature). , Hibernate 3 (version 3.5.0 and up) was a certified implementation of the Java Persistence API 2.0 specification via a wrapper for the Core module which provides conformity with the JSR 317 standard. In Dec 2011, Hibernate Core 4.0.0 Final was released. This includes new features such a
multi-tenancy
support, introduction of ServiceRegistry (a major change in how Hibernate builds and manages "services"), better session opening from SessionFactory, improved integration via ''org.hibernate.integrator.spi.Integrator'' and auto discovery,
internationalization In economics, internationalization or internationalisation is the process of increasing involvement of enterprises in international markets, although there is no agreed definition of internationalization. Internationalization is a crucial strateg ...
support, message codes in logging, and a more distinction between the API, SPI or implementation classes. In December 2012, Hibernate ORM 4.1.9 Final was released. In Mar 2013, Hibernate ORM 4.2 Final was released. In December 2013, Hibernate ORM 4.3.0 Final was released. It features Java Persistence API 2.1. In September 2015, Hibernate ORM 5.0.2 Final was released. It has improved bootstrapping, hibernate-java8, hibernate-spatial, Karaf support. In November 2018, Hibernate ORM 5.1.17 Final was released. This is the final release of the 5.1 series. In October 2018, Hibernate ORM 5.3 Final was released. It featured Java Persistence API 2.2 inheritance caching. In December 2018, Hibernate ORM 5.4.0 Final was released. In October 2022, Hibernate ORM 6.1.4 Final was released.


Application programming interface

The Hibernate API is provided in the
Java package A Java package organizes Java classes into namespaces, providing a unique namespace for each type it contains. Classes in the same package can access each other's package-private and protected members. In general, a package can contain the follo ...
org.hibernate.


org.hibernate.SessionFactory interface


org.hibernate.Session interface

The org.hibernate.Session interface represents a Hibernate session, i.e., the main point of the manipulation performed on the database entities. The latter activities include (among the other things) managing the persistence state ( transient, persisted, detached) of the objects, fetching the persisted ones from the database and the management of the transaction demarcation. A session is intended to last as long as the logical transaction on the database. Due to the latter feature, Session implementations are not expected to be thread safe nor to be used by multiple clients.


Software components

The Hibernate software includes the following components: * Hibernate ORM (known as Hibernate Core before release 4.1) – the base software for an object–relational mapping solution for Java environments * Hibernate Annotations (merged into Hibernate Core/ORM since version 3.6) – metadata that governs the transformation of data between the object-oriented model and the relational database model according to the JSR 317
Java Persistence API Jakarta Persistence (JPA; formerly Java Persistence API) is a Jakarta EE application programming interface specification that describes the management of relational data in enterprise Java applications. Persistence in this context covers three a ...
(JPA 2) * Hibernate EntityManager (merged into Hibernate Core/ORM since version 5.2)– together with Hibernate Annotations, a wrapper that implements a JSR 317
Java Persistence API Jakarta Persistence (JPA; formerly Java Persistence API) is a Jakarta EE application programming interface specification that describes the management of relational data in enterprise Java applications. Persistence in this context covers three a ...
(JPA 2) persistence solution * Hibernate Envers – auditing and versioning of persistent classes * Hibernate OGM (Object/Grid Mapper) – an extension to store data in a
NoSQL A NoSQL (originally referring to "non- SQL" or "non-relational") database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. Such databases have existed ...
store * Hibernate Shards – horizontal partitioning for multiple relational databases ** While Hibernate Shards is not compatible with 4.x releases of Hibernate Core, some of the Shards capability was integrated into Core in the 4.0 release * Hibernate Search – integrates the full text library functionality from
Apache Lucene Apache Lucene is a free and open-source search engine software library, originally written in Java by Doug Cutting. It is supported by the Apache Software Foundation and is released under the Apache Software License. Lucene is widely used as ...
in the Hibernate and JPA model * Hibernate Tools – a set of tools implemented as a suite of
Eclipse An eclipse is an astronomical event that occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ce ...
plugins and
Ant Ants are eusocial insects of the family Formicidae and, along with the related wasps and bees, belong to the order Hymenoptera. Ants evolved from vespoid wasp ancestors in the Cretaceous period. More than 13,800 of an estimated total of 22 ...
tasks included in JBoss Developer Studio * Hibernate Validator – the
reference implementation In the software development process, a reference implementation (or, less frequently, sample implementation or model implementation) is a program that implements all requirements from a corresponding specification. The reference implementation o ...
of JSR 303
Bean Validation Bean Validation defines a metadata model and API for JavaBean validation. The metadata source is annotations, with the ability to override and extend the meta-data through the use of XML validation descriptors. Originally defined as part of Java ...
* Hibernate Metamodel Generator – an annotation processor that creates JSR 317
Java Persistence API Jakarta Persistence (JPA; formerly Java Persistence API) is a Jakarta EE application programming interface specification that describes the management of relational data in enterprise Java applications. Persistence in this context covers three a ...
(JPA 2) static metamodel classes using the JSR 269 Pluggable Annotation Processing API *
NHibernate NHibernate is an object–relational mapping (ORM) solution for the Microsoft .NET platform. It provides a framework for mapping an object-oriented domain model to a traditional relational database. Its purpose is to relieve the developer from a ...
– an object–relational mapping solution for the
.NET Framework The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...


See also

*
List of JBoss software This is a list of articles for JBoss software, and projects from the JBoss Community and Red Hat. This open-source software written in Java is developed in projects, and productized with commercial-level support by Red Hat. JBoss productized so ...
*
List of object–relational mapping software This is a list of well-known object–relational mapping software. It is not up-to-date or all-inclusive. Java * Apache Cayenne, open-source for Java *Apache OpenJPA, open-source for Java *DataNucleus, open-source JDO and JPA implementation (forme ...
*
NHibernate NHibernate is an object–relational mapping (ORM) solution for the Microsoft .NET platform. It provides a framework for mapping an object-oriented domain model to a traditional relational database. Its purpose is to relieve the developer from a ...
*
Serialization In computing, serialization (or serialisation) is the process of translating a data structure or object state into a format that can be stored (e.g. files in secondary storage devices, data buffers in primary storage devices) or transmitted (e ...
*
Service Data Object Service Data Objects is a technology that allows heterogeneous data to be accessed in a uniform way. The SDO specification was originally developed in 2004 as a joint collaboration between Oracle ( BEA) and IBM and approved by the Java Communit ...
*
MySQL MySQL () is an open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A relational database o ...
*
Apache Cassandra Cassandra is a free and open-source, distributed, wide-column store, NoSQL database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. Cassandr ...
*
Spring Framework The Spring Framework is an application framework and inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java ...
*
MyBatis MyBatis is a Java persistence framework that couples objects with stored procedures or SQL statements using an XML descriptor or annotations. MyBatis is free software that is distributed under the Apache License 2.0. MyBatis is a fork of iBATI ...


References


Bibliography

* * * * * * * * * *


External links

* * {{Authority control Object-relational mapping Java enterprise platform Red Hat software Cross-platform software Persistence frameworks